package com.ruge.user.service;

import com.ruge.core.response.Response;
import com.ruge.user.domain.request.BlobFollowRequest;

/**
 * @author ruge.wu
 * @since 2021/12/27 15:57
 */
public interface BlobFollowService {

    /**
     * 关注（关注接口）
     *
     * @param request {@link BlobFollowRequest}
     * @return {@link Response}
     */
    Response follow(BlobFollowRequest request);

    /**
     * 查询我的关注（查看我的关注列表）
     *
     * @param aid aid
     * @return {@link Response}
     */
    Response getMyFollow(Long aid);

    /**
     * 查询我的粉丝列表
     *
     * @param aid aid
     * @return {@link Response}
     */
    Response getMyFans(Long aid);

    /**
     * 共同关注 （返回我和博主的共同关注）
     * sinter rugeSet xuruiSet -> {zhangsan,lisi}
     *
     * @param request {@link BlobFollowRequest}
     * @return {@link Response}
     */
    Response getCommonFollow(BlobFollowRequest request);

    /**
     * 我关注的人也关注他
     * sismember zhagnsanSet xurui
     * sismember lisiSet xurui
     * sismember wangwuSet xurui
     *
     * @param request {@link BlobFollowRequest}
     * @return {@link Response}
     */
    Response getMyFollowTransFollow(BlobFollowRequest request);

    /**
     * 我可能认识的人
     * sdiff rugeSet xuruiSet
     *
     * @param aid aid
     * @return {@link Response}
     */
    Response getMyMayKnowPerson(Long aid);

}
